package cn.com.bluemoon.daps.sync.service;

import cn.com.bluemoon.daps.common.domain.UserInfoHolder;
import cn.com.bluemoon.daps.common.enums.SyncToEnv;
import cn.com.bluemoon.daps.sync.entity.DapSyncProdEnvTask;
import cn.com.bluemoon.daps.sync.vo.model2prod.SyncModelOrderOut;
import cn.com.bluemoon.daps.sync.vo.model2prod.SyncModelOrderPageVo;
import cn.com.bluemoon.daps.sync.vo.model2prod.SyncOperRecordOut;
import cn.com.bluemoon.daps.sync.vo.model2prod.SyncPublishInfoOut;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.util.List;

/**
 * @author Jarod.Kong
 * @date 2021/6/23 13:42
 */
public interface DapModel2ProdSyncService {
    /**
     * 同步列表
     *
     * @param searchVo 查询条件
     * @return page
     */
    IPage<SyncModelOrderOut> querySyncList(SyncModelOrderPageVo<DapSyncProdEnvTask> searchVo);

    /**
     * 发布同步
     *
     * @param syncToEnv 同步环境
     * @param modelId   模型id
     * @param taskId    模型单号任务id
     * @return 结果
     */
    boolean syncPublish(SyncToEnv syncToEnv, String modelId, String taskId, UserInfoHolder.UserInfo userInfo);

    /**
     * 模型+任务id（获取单号）
     * 获取操作记录
     *
     * @param modelId 模型
     * @param taskId  任务id
     * @return 记录
     */
    List<SyncOperRecordOut> findOperRecords(String modelId, String taskId);

    /**
     * 模型+任务id（获取单号）
     * 获取发布明细
     *
     * @param modelId 模型
     * @param taskId  任务id
     * @param syncToEnv 查看哪个环境数据
     * @return 记录
     */
    SyncPublishInfoOut getPublishInfo(String modelId, String taskId, SyncToEnv syncToEnv);

    /**
     * 模型+任务id（获取单号）
     * 任务明细、对应环境的、日志汇总
     *
     * @param syncToEnv 查看哪个环境数据
     * @param modelId 模型
     * @param taskId  任务id
     * @return 记录
     */
    List<String> getTaskLogs(SyncToEnv syncToEnv, String modelId, String taskId);
}
